home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Bavarian / Bavarian #022 (19xx)(APS Electronic).zip / Bavarian #022 (19xx)(APS Electronic).adf / Kampf um Eriador (.txt) < prev    next >
AmigaBASIC Source Code  |  1988-01-24  |  25KB  |  831 lines

  1. ' *****************************************************
  2. ' *                                                   *
  3. ' *          K a m p f   u m   E r i a d o r          *
  4. ' *         ---------------------------------         *
  5. ' *                                                   *
  6. ' *         Programmiert im August 1987 von :         *
  7. ' *                                                   *
  8. ' *         Ralf Böwing          Roland Hartz         *
  9. ' *                                                   *
  10. ' *                                                   *
  11. ' *                                                   *
  12. ' *****************************************************
  13.  
  14.  
  15. REM *** Daten initialisieren ***
  16.  
  17.   CLEAR ,45000
  18.   LOCATE 10,25:PRINT "Bitte warten - ich lade Daten..."
  19.  
  20.   DEFINT zx,zy,bldnr,bldnralt,turn
  21.   DIM fw(15,2)
  22.   DIM SHARED spar%(38,38),fig%(38,38),oo%(9),ab%(9),ob%(206,24),leer%(206)
  23.   DIM SHARED st%(94),ma%(94),wa%(94),bi%(94),nam$(17),fb%(6),fganz(1)
  24.   DIM SHARED beweg%(94)
  25.   
  26.   ON ERROR GOTO fehler
  27.   
  28.   OPEN "Eriador.Grafik" FOR INPUT AS 1
  29.     FOR j=0 TO 24
  30.       FOR i=0 TO 206
  31.         ob%(i,j)=CVI(INPUT$(2,1))
  32.       NEXT i
  33.     NEXT j
  34.   CLOSE 1
  35.  
  36.   FOR i=0 TO 206:leer%(i)=ob%(i,18):NEXT i
  37.  
  38.   GOSUB moveclr 
  39.   fganz(0)=47:fganz(1)=47
  40.   
  41.   RESTORE zofb
  42.   FOR i=0 TO 6:READ fb%(i):NEXT i  
  43. zofb:
  44.   DATA 7,4,5,14,15,2,15
  45.   
  46.  
  47.   OPEN "Eriador.Spiel" FOR INPUT AS 1
  48.   GOSUB loadcheck
  49.   IF loadjn=0 THEN CLOSE 1:GOTO okw
  50.   spm=1:loaded=1
  51.   FOR j=0 TO 38
  52.     FOR i=0 TO 38
  53.       spar%(i,j)=CVI(INPUT$(2,1))
  54.       fig%(i,j)=CVI(INPUT$(2,1))
  55.     NEXT i
  56.   NEXT j
  57.   FOR i=1 TO 94
  58.     st%(i)=CVI(INPUT$(2,1))
  59.     beweg%(i)=CVI(INPUT$(2,1))
  60.   NEXT i
  61.   turn=CVI(INPUT$(2,1))
  62.   FOR i=0 TO 1
  63.     cx%(i)=CVI(INPUT$(2,1))
  64.     cy%(i)=CVI(INPUT$(2,1))
  65.     mm%(i)=CVI(INPUT$(2,1))
  66.   NEXT    
  67.   CLOSE 1
  68.  
  69. okw:      
  70.   IF spm<>1 THEN
  71.     OPEN "Eriador.Spielfeld" FOR INPUT AS 1
  72.       FOR j=0 TO 38
  73.         FOR i=0 TO 38
  74.           spar%(i,j)=CVI(INPUT$(2,1))
  75.         NEXT i
  76.       NEXT j
  77.     CLOSE 1  
  78.   END IF
  79.   
  80.   RESTORE bko    
  81.   FOR i=1 TO 9
  82.     READ oo%(i):READ ab%(i)
  83.   NEXT i  
  84. bko:
  85.   DATA 0,26,13,26,26,26,0,13,13,13,26,13,0,0,13,0,26,0
  86.  
  87.   RESTORE figpos:zaehl=0
  88.   FOR j=0 TO 17
  89.     READ anz
  90.     FOR i=1 TO anz
  91.       zaehl=zaehl+1
  92.       READ x,y:bi%(zaehl)=j
  93.       IF spm<>1 THEN fig%(x,y)=zaehl
  94.     NEXT i
  95.     READ nam$(j)
  96.   NEXT j
  97.  
  98. figpos:
  99.   DATA 9,8,9,10,9,9,8,18,2,20,2,19,1,20,11,22,11,21,10,"Axtmann"
  100.   DATA 9,9,9,8,8,10,8,19,2,18,1,20,1,21,11,20,10,22,10,"Schwertkämpfer"
  101.   DATA 6,7,7,11,7,17,0,21,0,19,9,23,9,"Legionär"
  102.   DATA 6,7,9,11,9,17,2,21,2,19,11,23,11,"Ritter"
  103.   DATA 6,7,8,11,8,17,1,21,1,19,10,23,10,"Schütze"
  104.   DATA 3,9,7,19,0,21,9,"Belag.Mannsch."
  105.   DATA 6,8,7,10,7,18,0,20,0,20,9,22,9,"Adler"
  106.   DATA 1,0,0,"König des Lichts"
  107.   DATA 1,4,3,"Magier"
  108.   
  109.   DATA 9,8,35,10,35,9,36,19,33,21,33,20,34,30,30,32,30,31,31,"Keulenmann"
  110.   DATA 9,9,35,8,36,10,36,20,33,19,34,21,34,31,30,30,31,32,31,"Schwertkämpfer"
  111.   DATA 6,7,37,11,37,18,35,22,35,29,32,33,32,"Legionär"
  112.   DATA 6,7,35,11,35,18,33,22,33,29,30,33,30,"Ritter"
  113.   DATA 6,7,36,11,36,18,34,22,34,29,31,33,31,"Schütze"
  114.   DATA 3,9,37,20,35,31,32,"Belag.Mannsch."
  115.   DATA 6,8,37,10,37,19,35,21,35,30,32,32,32,"Drachen"      
  116.   DATA 1,38,38,"König d. Dunkels"
  117.   DATA 1,35,34,"Magier"    
  118.  
  119.   RANDOMIZE TIMER
  120.   FOR i=1 TO 9
  121.     IF spm<>1 THEN st%(i)=INT(RND(1)*4)+5:st%(i+47)=INT(RND(1)*4)+5
  122.     ma%(i)=3:ma%(i+47)=3:wa%(i)=1:wa%(i+47)=1
  123.   NEXT i
  124.   FOR i=10 TO 18
  125.     IF spm<>1 THEN st%(i)=INT(RND(1)*4)+7:st%(i+47)=INT(RND(1)*4)+7
  126.     ma%(i)=3:ma%(i+47)=3:wa%(i)=1:wa%(i+47)=1
  127.   NEXT i      
  128.   FOR i=19 TO 24
  129.     IF spm<>1 THEN st%(i)=INT(RND(1)*4)+9:st%(i+47)=INT(RND(1)*4)+9
  130.     ma%(i)=3:ma%(i+47)=3:wa%(i)=2:wa%(i+47)=2
  131.   NEXT i      
  132.   FOR i=25 TO 30
  133.     IF spm<>1 THEN st%(i)=INT(RND(1)*4)+11:st%(i+47)=INT(RND(1)*4)+11
  134.     ma%(i)=4:ma%(i+47)=4:wa%(i)=2:wa%(i+47)=2
  135.   NEXT i      
  136.   FOR i=31 TO 36
  137.     IF spm<>1 THEN st%(i)=INT(RND(1)*4)+7:st%(i+47)=INT(RND(1)*4)+7
  138.     ma%(i)=3:ma%(i+47)=3:wa%(i)=3:wa%(i+47)=3
  139.   NEXT i      
  140.   FOR i=37 TO 39
  141.     IF spm<>1 THEN st%(i)=INT(RND(1)*4)+4:st%(i+47)=INT(RND(1)*4)+4
  142.     ma%(i)=3:ma%(i+47)=3:wa%(i)=1:wa%(i+47)=1
  143.   NEXT i      
  144.   FOR i=40 TO 45
  145.     IF spm<>1 THEN st%(i)=INT(RND(1)*4)+13:st%(i+47)=INT(RND(1)*4)+13
  146.     ma%(i)=5:ma%(i+47)=5:wa%(i)=2:wa%(i+47)=2
  147.   NEXT i      
  148.   IF spm<>1 THEN st%(46)=INT(RND(1)*4)+12:st%(93)=INT(RND(1)*4)+12
  149.   ma%(46)=3:ma%(93)=3:wa%(46)=1:wa%(93)=1
  150.   IF spm<>1 THEN st%(47)=INT(RND(1)*4)+25:st%(94)=INT(RND(1)*4)+25        
  151.   ma%(47)=4:ma%(94)=4:wa%(47)=13:wa%(94)=13
  152.  
  153.   SCREEN 1,640,256,4,2
  154.   WINDOW 2,"",,0,1
  155.  
  156.   OPEN "Eriador.Sprite" FOR INPUT AS 1
  157.     OBJECT.SHAPE 1,INPUT$(LOF(1),1)
  158.   CLOSE 1 
  159.   OBJECT.X 1,639:OBJECT.Y 1,255
  160.  
  161.  
  162.   DECLARE FUNCTION Move& LIBRARY
  163.   DECLARE FUNCTION OpenDiskFont& LIBRARY
  164.  
  165.   LIBRARY "graphics.library"
  166.   LIBRARY "diskfont.library"
  167.  
  168.   Diskfont "garnet",16
  169.  
  170.   GOSUB farbreset
  171.   Map=0:einl=0:GOSUB TitleScreen
  172.   GOTO Spiel
  173.  
  174.  
  175. REM *** Unterprogramme und Subroutinen ***      
  176.   
  177.   SUB Diskfont (font$,height%) STATIC
  178.     SHARED strFont&
  179.     prefs%=96
  180.     font0$=font$+".font"+CHR$(0)
  181.     IF strFont&<>0 THEN CALL CloseFont (strFont&)
  182.     textAttr&(0)=SADD(font0$)
  183.     textAttr&(1)=height%*2^16+prefs%
  184.     strFont&=OpenDiskFont& (VARPTR(textAttr&(0)))
  185.     IF strFont&<>0 THEN CALL SetFont(WINDOW(8),strFont&)
  186.   END SUB
  187.     
  188.   SUB Shadow (text$,spacing%,depth%,height%,mode%,x%,y%) STATIC
  189.     IF mode%=0 THEN
  190.       crsx%=POS(0)*height%
  191.       crsy%=(CSRLIN)*8
  192.     ELSE 
  193.       crsx%=x%:crsy%=y%
  194.     END IF
  195.     IF crsy%<8 THEN crsy%=8
  196.     CALL SetDrMd&(WINDOW(8),0)
  197.     E&=Move&(WINDOW(8),crsx%+depth%,crsy%+depth%)
  198.     COLOR 9,0
  199.     PRINT text$;
  200.     COLOR 11,0
  201.     E&=Move&(WINDOW(8),crsx%,crsy%)
  202.     PRINT text$;
  203.   END SUB
  204.   
  205.   SUB Mapon (bnr%) STATIC
  206.     SHARED zx,zy,mpjn,bldnralt
  207.     OBJECT.OFF 1
  208.     LINE (176,0)-(177,236),1,bf:LINE (177,236)-(639,236),1
  209.     LINE (0,0)-(172,236),1,b:LINE(1,0)-(171,236),1,b
  210.     LINE (0,238)-(639,253),1,b:LINE(1,238)-(638,253),1,b
  211.  
  212.     FOR i%=ab%(bnr%) TO ab%(bnr%)+12
  213.       ii%=(i%-ab%(bnr%))*18+1
  214.       FOR j%=oo%(bnr%) TO oo%(bnr%)+12                   
  215.         jj%=(j%-oo%(bnr%))*35+180
  216.         IF fig%(j%,i%)<>0 THEN PUT (jj%,ii%),ob%(0,bi%(fig%(j%,i%))),PSET:GOTO zxy
  217.         IF spar%(j%,i%)=0 THEN PUT (jj%,ii%),leer%,PSET:GOTO zxy 
  218.         PUT (jj%,ii%),ob%(0,spar%(j%,i%)+18),PSET        
  219. zxy:  NEXT j%
  220.     NEXT i%   
  221.  
  222.     mpjn=1:Zeigerset zx,zy,bnr%:OBJECT.ON 1
  223.   END SUB              
  224.  
  225.   
  226.   SUB warten (t%) STATIC
  227.     m=MOUSE(0)
  228.     t!=TIMER
  229. jgfh:
  230.     IF TIMER<=t!+t% AND MOUSE(0)=0 THEN jgfh    
  231.   END SUB
  232.  
  233.   SUB Zeigerset (x%,y%,bnr%) STATIC
  234.     OBJECT.X 1,(x%-oo%(bnr%))*35+194
  235.     OBJECT.Y 1,(y%-ab%(bnr%))*18+11
  236.   END SUB              
  237.  
  238.   SUB mclr (y%,x%) STATIC
  239.     LOCATE y%,x%
  240.     crsx%=POS(0)*9:crsy%=(CSRLIN)*8
  241.     LINE (crsx%,crsy%)-STEP(18,12),0,bf
  242.   END SUB
  243.  
  244. fehler:
  245.   IF ERR=53 THEN CLOSE 1:RESUME okw 
  246.   PRINT "Programmfehler !"
  247.   END
  248.     
  249. farbreset:
  250.   RESTORE farben:colz=15
  251.   FOR i=0 TO colz
  252.     FOR ii=0 TO 2
  253.       READ fw(i,ii)
  254.     NEXT ii
  255.   NEXT i
  256. farben:  
  257.   DATA 0,0,0,8,8,8,0,1,7,0,2,10
  258.   DATA 0,4,14,0,5,0,3,7,0,5,9,0
  259.   DATA 12,0,8,12,1,1,14,1,1
  260.   DATA 14,9,0,14,11,0,14,13,0,4,4,4,7,7,7
  261.   FOR i=0 TO colz
  262.     PALETTE i,fw(i,0)/15,fw(i,1)/15,fw(i,2)/15
  263.   NEXT  
  264.   RETURN
  265.  
  266. farbenaus:
  267.   FOR i=0 TO 15
  268.     PALETTE i,0,0,0
  269.   NEXT
  270.   RETURN
  271.   
  272. loadcheck:
  273.   CLS:LOCATE 6,17
  274.   PRINT "Es ist noch ein alter Spielstand gespeichert !"
  275.   LOCATE 8,17:PRINT "       Wünschen Sie, ihn fortzusetzen ?"
  276.   k$=UCASE$(INKEY$)
  277.   WHILE k$<>"J" AND k$<>"N"
  278.     k$=UCASE$(INKEY$)
  279.   WEND
  280.   IF k$="J" THEN loadjn=1 :ELSE loadjn=0
  281.   RETURN
  282.  
  283. groclear:
  284.   LINE (2,1)-(170,235),0,bf
  285.   RETURN
  286.   
  287. kleinclear:
  288.   LINE (2,239)-(637,253),0,bf
  289.   RETURN
  290.  
  291. tasten:  
  292.   k$=""
  293.   WHILE k$=""
  294.     k$=INKEY$
  295.   WEND  
  296.   IF k$>="1" AND k$<="9" AND bldnr=VAL(k$) THEN tasten
  297.   IF k$>="1" AND k$<="9" THEN bldnr=VAL(k$):zx=oo%(bldnr)+(zx MOD 13):zy=ab%(bldnr)+(zy MOD 13)::Mapon bldnr:GOTO tasten
  298.   IF k$=CHR$(13) AND (fig%(zx,zy)>=offs AND fig%(zx,zy)<=offs+46) AND beweg%(fig%(zx,zy))<2 THEN GOSUB genommen:RETURN
  299.  
  300.   IF UCASE$(k$)="Q" THEN
  301.     tza=15
  302.     RETURN
  303.   END IF
  304.   
  305.   IF k$=CHR$(28) AND zy>0 THEN
  306.     IF (zy MOD 13<>0) THEN 
  307.       zy=zy-1:Zeigerset zx,zy,bldnr 
  308.     ELSE
  309.       zy=zy-1:bldnr=bldnr+3:Mapon bldnr
  310.     END IF
  311.   END IF  
  312.  
  313.   IF k$=CHR$(29) AND zy<38 THEN 
  314.     IF ((zy+1) MOD 13<>0) THEN
  315.       zy=zy+1:Zeigerset zx,zy,bldnr 
  316.     ELSE
  317.       zy=zy+1:bldnr=bldnr-3:Mapon bldnr
  318.     END IF
  319.   END IF  
  320.  
  321.   IF k$=CHR$(30) AND zx<38 THEN 
  322.     IF ((zx+1) MOD 13<>0) THEN 
  323.       zx=zx+1:Zeigerset zx,zy,bldnr
  324.     ELSE 
  325.       zx=zx+1:bldnr=bldnr+1:Mapon bldnr
  326.     END IF
  327.   END IF
  328.  
  329.   IF k$=CHR$(31) AND zx>0 THEN 
  330.     IF (zx MOD 13<>0) THEN 
  331.       zx=zx-1:Zeigerset zx,zy,bldnr 
  332.     ELSE
  333.       zx=zx-1:bldnr=bldnr-1:Mapon bldnr
  334.     END IF
  335.   END IF
  336.   
  337.   IF k$=CHR$(139) THEN
  338.     SOUND 700,4.5,200,0:SOUND 710,4.5,200,1    
  339.     OBJECT.OFF 1
  340.     LINE (180,1)-(639,235),0,bf
  341.     LOCATE 6,1:Shadow "Legende :",9,1,9,0,0,0
  342.     LOCATE 9,1:Shadow "Ebene :",9,1,9,0,0,0:LINE (123,65)-(132,73),7,bf
  343.     LOCATE 11,1:Shadow "Wasser :",9,1,9,0,0,0:LINE (123,81)-(132,89),4,bf
  344.     LOCATE 13,1:Shadow "Wald :",9,1,9,0,0,0:LINE (123,97)-(132,105),5,bf 
  345.     LOCATE 15,1:Shadow "Gebirge :",9,1,9,0,0,0:LINE (123,113)-(132,121),14,bf
  346.     LOCATE 17,1:Shadow "Bauwerk :",9,1,9,0,0,0:LINE (123,129)-(132,137),15,bf
  347.     LOCATE 19,1:Shadow "Sumpf :",9,1,9,0,0,0:LINE (123,145)-(132,153),2,bf
  348.     LOCATE 22,1:Shadow "Helle Armee :",9,1,9,0,0,0:LINE(153,169)-(161,177),12,bf:CIRCLE (157,173),1,9
  349.     LOCATE 24,1:Shadow "Dunkle Armee :",9,1,9,0,0,0:LINE (153,185)-(161,193),3,bf:CIRCLE (157,189),1,9
  350.     FOR i%=0 TO 38
  351.     ii%=i%*6+1
  352.       FOR j%=0 TO 38  
  353.         jj%=j%*10+210
  354.         IF bi%(fig%(j%,i%))<9 THEN obf%=12 :ELSE obf%=3 
  355.         IF fig%(j%,i%)<>0 THEN
  356.           LINE (jj%,ii%)-STEP(8,4),obf%,bf
  357.           CIRCLE (jj%+4,ii%+2),1,9
  358.           GOTO abc
  359.         END IF
  360.         LINE (jj%,ii%)-STEP(8,4),fb%(spar%(j%,i%)),bf
  361. abc:  NEXT j%
  362.     NEXT i%
  363.         
  364.     LINE (338,1)-(339,233),9,b
  365.     LINE (468,1)-(469,233),9,b
  366.     LINE (210,78)-(598,78),9
  367.     LINE (210,156)-(598,156),9
  368.     
  369.     k$=INKEY$
  370.     WHILE k$<>" "
  371.       k$=INKEY$
  372.     WEND
  373.     SOUND 700,4.5,200,0:SOUND 710,4.5,200,1
  374.     LINE (180,1)-(639,235),0,bf
  375.     GOSUB groclear
  376.     Mapon bldnr
  377.   END IF  
  378.  
  379.   IF k$=CHR$(27) THEN
  380.     SOUND 700,4.5,200,0:SOUND 710,4.5,200,1    
  381.     OBJECT.OFF 1
  382.     LINE (180,1)-(639,235),0,bf
  383.     GOSUB groclear
  384.     LOCATE 11,34:Shadow "Möchten Sie das Spiel",9,1,9,0,0,0
  385.     LOCATE 13,32:Shadow "(a)bbrechen,   (s)peichern",9,1,9,0,0,0
  386.     LOCATE 15,35:Shadow "oder (f)ortführen ?",9,1,9,0,0,0
  387.     k$=UCASE$(INKEY$)
  388.     WHILE k$<>"A" AND k$<>"S" AND k$<>"F"
  389.       k$=UCASE$(INKEY$)
  390.     WEND
  391.     SOUND 700,4.5,200,0:SOUND 710,4.5,200,1
  392.     IF k$="A" THEN
  393.       WINDOW CLOSE 2:SCREEN CLOSE 1
  394.       SYSTEM
  395.     END IF
  396.     IF k$="S" THEN GOSUB speichern
  397.     LINE (180,1)-(639,235),0,bf
  398.     Mapon bldnr
  399.   END IF
  400.   RETURN
  401.  
  402. genommen:
  403.   SOUND 700,4.5,200,0:SOUND 710,4.5,200,1
  404.   PUT ((zx MOD 13)*35+180,(zy MOD 13)*18+1),ob%(0,bi%(fig%(zx,zy))),PRESET
  405.   zxalt=zx:zyalt=zy:REM Ursprungskoordinaten merken
  406.   ugrnd%=spar%(zx,zy):REM Untergrund merken
  407.   f%=fig%(zx,zy):zgw=0:mpjn=0:bldnralt=bldnr
  408.   GOSUB groclear
  409.   LOCATE 5,1:Shadow nam$(bi%(f%)),9,1,9,0,0,0
  410.   LOCATE 8,1:Shadow "Stärke   :",9,1,9,0,0,0:LOCATE 8,12:Shadow STR$(st%(f%)),9,1,9,0,0,0
  411.   LOCATE 10,1:Shadow "Reichweiten",9,1,9,0,0,0
  412.   LOCATE 12,1:Shadow "- Marsch :",9,1,9,0,0,0:LOCATE 12,12:Shadow STR$(ma%(f%)),9,1,9,0,0,0
  413.   LOCATE 14,1:Shadow "- Waffen :",9,1,9,0,0,0:LOCATE 14,12:Shadow STR$(wa%(f%)),9,1,9,0,0,0
  414.   LOCATE 17,1:Shadow "Verbl. Züge :",9,1,9,0,0,0
  415. E:  
  416.   mclr 16,15:LOCATE 17,14:Shadow STR$(ma%(f%)),9,1,9,0,0,0
  417.  
  418. tsabfr:  
  419.  k$=""
  420.   WHILE k$=""
  421.     k$=INKEY$
  422.   WEND
  423.   
  424.   IF k$=CHR$(127) THEN 
  425.     zgw=0:zx=zxalt:zy=zyalt:bgl=0
  426.     IF mpjn=0 THEN Zeigerset zx,zy,bldnr :ELSE Mapon bldnralt:bldnr=bldnralt:mpjn=0:PUT ((zx MOD 13)*35+180,(zy MOD 13)*18+1),ob%(0,bi%(fig%(zx,zy))),PRESET
  427.     GOTO E
  428.   END IF
  429.   
  430.   IF k$=CHR$(13) THEN
  431.     SOUND 400,4.5,200,0:SOUND 410,4.5,200,1
  432.     IF (fig%(zx,zy)<>0 AND fig%(zx,zy)<>f%) THEN
  433.       beweg%(f%)=beweg%(f%)+1:tza=tza+1
  434.       GOSUB gefecht:warten(2):GOSUB groclear
  435.       IF mpjn=0 AND freundkill=0 THEN PUT ((zxalt MOD 13)*35+180,(zyalt MOD 13)*18+1),ob%(0,bi%(fig%(zxalt,zyalt))),PSET        
  436.       RETURN
  437.     END IF  
  438.     IF (bi%(f%)<>8 AND bi%(f%)<>17) OR ((bi%(f%)=8 OR bi%(f%)=17) AND spar%(zx,zy)<>3) THEN
  439.       IF (bi%(f%)<>5 AND bi%(f%)<>14) OR ((bi%(f%)=5 OR bi%(f%)=14) AND spar%(zx,zy)<>4) THEN
  440.         IF fig%(zx,zy)<>f% THEN beweg%(f%)=beweg%(f%)+1:tza=tza+1
  441.         IF mpjn=0 THEN PUT ((zxalt MOD 13)*35+180,(zyalt MOD 13)*18+1),ob%(0,ugrnd%+18),PSET
  442.         PUT ((zx MOD 13)*35+180,(zy MOD 13)*18+1),ob%(0,bi%(f%)),PSET
  443.         fig%(zxalt,zyalt)=0:REM alten Platz löschen
  444.         fig%(zx,zy)=f%:REM neuen Platz besetzen
  445.         cx%(spieler)=zx:cy%(spieler)=zy:mm%(spieler)=bldnr
  446.       ELSE
  447.         PUT ((zxalt MOD 13)*35+180,(zyalt MOD 13)*18+1),ob%(0,bi%(fig%(zxalt,zyalt))),PSET      
  448.       END IF
  449.     ELSE
  450.       PUT ((zxalt MOD 13)*35+180,(zyalt MOD 13)*18+1),ob%(0,bi%(fig%(zxalt,zyalt))),PSET      
  451.     END IF
  452.     GOSUB groclear
  453.     RETURN
  454.   END IF
  455.   IF zgw>=ma%(f%) THEN tsabfr
  456.                                                   
  457.   IF k$=CHR$(28) AND zy>0 THEN 
  458.     fg%=fig%(zx,zy-1):sr%=spar%(zx,zy-1)
  459.     IF (bi%(f%)=6 OR bi%(f%)=15) AND sr%<>4 AND (fg%=0 OR (spieler=0 AND fg%<48 AND wa%(f%)>zgw) OR (spieler=1 AND fg%>47 AND wa%(f%)>zgw)) THEN a
  460.     IF (bi%(f%)=5 OR bi%(f%)=14) AND (sr%=4 OR sr%=6) AND wa%(f%)>zgw THEN a
  461.     IF (bi%(f%)=8 OR bi%(f%)=17) AND sr%<>3 AND bgl=1 THEN
  462.       zgw=0:zx=zxalt:zy=zyalt:bgl=0
  463.       IF mpjn=0 THEN Zeigerset zx,zy,bldnr :ELSE Mapon bldnralt:bldnr=bldnralt:mpjn=0:PUT ((zx MOD 13)*35+180,(zy MOD 13)*18+1),ob%(0,bi%(fig%(zx,zy))),PRESET
  464.       GOTO E
  465.     END IF
  466.     IF (bi%(f%)=8 OR bi%(f%)=17) AND sr%=3 AND wa%(f%)>zgw THEN a 
  467.     IF sr%<>1 AND sr%<>3 AND sr%<>4 AND (fg%=0 OR (spieler=0 AND fg%<48 AND wa%(f%)>zgw) OR (spieler=1 AND fg%>47 AND wa%(f%)>zgw)) THEN
  468. a:    IF (zy MOD 13<>0) THEN 
  469.         zy=zy-1:GOSUB mapr:Zeigerset zx,zy,bldnr 
  470.       ELSE
  471.         zy=zy-1:GOSUB mapr:bldnr=bldnr+3:Mapon bldnr
  472.       END IF
  473.     END IF 
  474.   END IF   
  475.  
  476.   IF k$=CHR$(29) AND zy<38 THEN
  477.     fg%=fig%(zx,zy+1):sr%=spar%(zx,zy+1)
  478.     IF (bi%(f%)=6 OR bi%(f%)=15) AND sr%<>4 AND (fg%=0 OR (spieler=0 AND fg%<48  AND wa%(f%)>zgw) OR (spieler=1 AND fg%>47 AND wa%(f%)>zgw)) THEN b 
  479.     IF (bi%(f%)=5 OR bi%(f%)=14) AND (sr%=4 OR sr%=6) AND wa%(f%)>zgw THEN b
  480.     IF (bi%(f%)=8 OR bi%(f%)=17) AND sr%<>3 AND bgl=1 THEN
  481.       zgw=0:zx=zxalt:zy=zyalt:bgl=0
  482.       IF mpjn=0 THEN Zeigerset zx,zy,bldnr :ELSE Mapon bldnralt:bldnr=bldnralt:mpjn=0:PUT ((zx MOD 13)*35+180,(zy MOD 13)*18+1),ob%(0,bi%(fig%(zx,zy))),PRESET
  483.       GOTO E
  484.     END IF    
  485.     IF (bi%(f%)=8 OR bi%(f%)=17) AND sr%=3 AND wa%(f%)>zgw THEN b
  486.     IF sr%<>1 AND sr%<>3 AND sr%<>4 AND (fg%=0 OR (spieler=0 AND fg%<48 AND wa%(f%)>zgw) OR (spieler=1 AND fg%>47 AND wa%(f%)>zgw)) THEN
  487. b:    IF ((zy+1) MOD 13<>0) THEN
  488.         zy=zy+1:GOSUB mapr:Zeigerset zx,zy,bldnr 
  489.       ELSE
  490.         zy=zy+1:GOSUB mapr:bldnr=bldnr-3:Mapon bldnr
  491.       END IF
  492.     END IF 
  493.   END IF   
  494.  
  495.   IF k$=CHR$(30) AND zx<38 THEN
  496.     fg%=fig%(zx+1,zy):sr%=spar%(zx+1,zy)
  497.     IF (bi%(f%)=6 OR bi%(f%)=15) AND sr%<>4 AND (fg%=0 OR (spieler=0 AND fg%<48 AND wa%(f%)>zgw) OR (spieler=1 AND fg%>47 AND wa%(f%)>zgw)) THEN c 
  498.     IF (bi%(f%)=5 OR bi%(f%)=14) AND (sr%=4 OR sr%=6) AND wa%(f%)>zgw THEN c
  499.     IF (bi%(f%)=8 OR bi%(f%)=17) AND sr%<>3 AND bgl=1 THEN
  500.       zgw=0:zx=zxalt:zy=zyalt:bgl=0
  501.       IF mpjn=0 THEN Zeigerset zx,zy,bldnr :ELSE Mapon bldnralt:bldnr=bldnralt:mpjn=0:PUT ((zx MOD 13)*35+180,(zy MOD 13)*18+1),ob%(0,bi%(fig%(zx,zy))),PRESET
  502.       GOTO E
  503.     END IF
  504.     IF (bi%(f%)=8 OR bi%(f%)=17) AND sr%=3 AND wa%(f%)>zgw THEN c
  505.     IF sr%<>1 AND sr%<>3 AND sr%<>4 AND (fg%=0 OR (spieler=0 AND fg%<48 AND wa%(f%)>zgw) OR (spieler=1 AND fg%>47 AND wa%(f%)>zgw)) THEN
  506. c:    IF ((zx+1) MOD 13<>0) THEN 
  507.         zx=zx+1:GOSUB mapr:Zeigerset zx,zy,bldnr
  508.       ELSE 
  509.         zx=zx+1:GOSUB mapr:bldnr=bldnr+1:Mapon bldnr
  510.       END IF
  511.     END IF
  512.   END IF
  513.  
  514.   IF k$=CHR$(31) AND zx>0 THEN
  515.     fg%=fig%(zx-1,zy):sr%=spar%(zx-1,zy)
  516.     IF (bi%(f%)=6 OR bi%(f%)=15) AND sr%<>4 AND (fg%=0 OR (spieler=0 AND fg%<48 AND wa%(f%)>zgw) OR (spieler=1 AND fg%>47 AND wa%(f%)>zgw)) THEN d 
  517.     IF (bi%(f%)=5 OR bi%(f%)=14) AND (sr%=4 OR sr%=6) AND wa%(f%)>zgw THEN d
  518.     IF (bi%(f%)=8 OR bi%(f%)=17) AND sr%<>3 AND bgl=1 THEN
  519.       zgw=0:zx=zxalt:zy=zyalt:bgl=0
  520.       IF mpjn=0 THEN Zeigerset zx,zy,bldnr :ELSE Mapon bldnralt:bldnr=bldnralt:mpjn=0:PUT ((zx MOD 13)*35+180,(zy MOD 13)*18+1),ob%(0,bi%(fig%(zx,zy))),PRESET
  521.       GOTO E
  522.     END IF
  523.     IF (bi%(f%)=8 OR bi%(f%)=17) AND sr%=3 AND wa%(f%)>zgw THEN d
  524.     IF sr%<>1 AND sr%<>3 AND sr%<>4 AND (fg%=0 OR (spieler=0 AND fg%<48 AND wa%(f%)>zgw) OR (spieler=1 AND fg%>47 AND wa%(f%)>zgw)) THEN
  525. d:    IF (zx MOD 13<>0) THEN 
  526.         zx=zx-1:GOSUB mapr:Zeigerset zx,zy,bldnr 
  527.       ELSE
  528.         zx=zx-1:GOSUB mapr:bldnr=bldnr-1:Mapon bldnr
  529.       END IF
  530.     END IF
  531.   END IF
  532.  
  533.   IF UCASE$(k$)="F" AND fig%(zx,zy)=0 THEN
  534.     fg%=fig%(zxalt,zyalt):sr%=spar%(zx,zy)
  535.     IF (bi%(fg%)=5 OR bi%(fg%)=14) THEN
  536.       FOR i=800 TO 100 STEP -20
  537.         SOUND i,1,200,0:SOUND i+10,1.5,200,1
  538.       NEXT i              
  539.       IF sr%=6 OR sr%=4 THEN
  540.         beweg%(fg%)=beweg%(fg%)+1:tza=tza+1
  541.         spar%(zx,zy)=0
  542.         IF sr%=6 AND zx>17 AND zx<21 THEN spar%(zx,zy)=1 
  543.       END IF
  544.     END IF
  545.     PUT ((zx MOD 13)*35+180,(zy MOD 13)*18+1),ob%(0,spar%(zx,zy)+18),PSET
  546.     IF mpjn=1 THEN zx=zxalt:zy=zyalt:Mapon bldnralt:bldnr=bldnralt:mpjn=0:bgl=0
  547.     PUT ((zxalt MOD 13)*35+180,(zyalt MOD 13)*18+1),ob%(0,bi%(fig%(zxalt,zyalt))),PSET
  548.     GOSUB groclear
  549.     RETURN
  550.   END IF
  551.  
  552.   IF UCASE$(k$)="S" AND fig%(zx,zy)=0 THEN
  553.     fg%=fig%(zxalt,zyalt):sr%=spar%(zx,zy)
  554.     IF (bi%(fg%)=8 OR bi%(fg%)=17) AND sr%=3 AND st%(fg%)>8 THEN
  555.       FOR i=800 TO 100 STEP -20
  556.         SOUND i,1,200,0:SOUND i+10,1.5,200,1
  557.       NEXT i        
  558.       spar%(zx,zy)=0
  559.       PUT ((zx MOD 13)*35+180,(zy MOD 13)*18+1),ob%(0,18),PSET
  560.       st%(fg%)=st%(fg%)-8
  561.       beweg%(fg%)=beweg%(fg%)+1
  562.     END IF
  563.     bgl=0
  564.     IF mpjn=1 THEN zx=zxalt:zy=zyalt:Mapon bldnralt:bldnr=bldnralt:mpjn=0
  565.     PUT ((zxalt MOD 13)*35+180,(zyalt MOD 13)*18+1),ob%(0,bi%(fig%(zxalt,zyalt))),PSET     
  566.     GOSUB groclear
  567.     RETURN
  568.   END IF
  569.   GOTO tsabfr
  570.  
  571. mapr:
  572.   IF NOT (bi%(f%)=6 OR bi%(f%)=15) AND spar%(zx,zy)=2 THEN zgw=zgw+1
  573.   IF NOT (bi%(f%)=6 OR bi%(f%)=15) AND spar%(zx,zy)=5 THEN zgw=zgw+2
  574.   IF (bi%(f%)<>8 AND bi%(f%)<>17) OR ((bi%(f%)=8 OR bi%(f%)=17) AND spar%(zx,zy)<>3) THEN zgw=zgw+1 :ELSE bgl=1
  575.   mclr 16,15:LOCATE 17,14
  576.   IF zgw>=ma%(f%) THEN
  577.     Shadow " 0",9,1,9,0,0,0
  578.   ELSE
  579.     Shadow STR$(ma%(f%)-zgw),9,1,9,0,0,0
  580.   END IF
  581.   IF (spieler=0 AND fig%(zx,zy)<48 AND fig%(zx,zy)>0) OR (spieler=1 AND fig%(zx,zy)>47) THEN
  582.     LINE (5,160)-STEP(160,30),0,bf
  583.     LOCATE 21,1:Shadow nam$(bi%(fig%(zx,zy))),9,1,9,0,0,0
  584.     LOCATE 23,1:Shadow "Stärke  :  "+STR$(st%(fig%(zx,zy))),9,1,9,0,0,0
  585.   ELSE
  586.     LINE (5,160)-STEP(160,30),0,bf      
  587.   END IF
  588.   RETURN  
  589.  
  590. gefecht:
  591.   minsta%=3:minstb%=3:freundkill=0:feindkill=0
  592.   IF st%(f%)<minsta% THEN minsta%=INT(st%(f%)/2+0.5)
  593.   IF st%(fig%(zx,zy))<minstb% THEN minstb%=INT(st%(fig%(zx,zy))\2+0.5)   
  594.   ha%=INT(RND(1)*INT(st%(f%)/3))+minsta%:hv%=INT(RND(1)*INT(st%(fig%(zx,zy))/4))+minstb%
  595.   st%(fig%(zx,zy))=st%(fig%(zx,zy))-ha%
  596.   IF st%(fig%(zx,zy))<=0 THEN
  597.     LINE (5,160)-STEP(160,30),0,bf 
  598.     PUT ((zx MOD 13)*35+180,(zy MOD 13)*18+1),ob%(0,spar%(zx,zy)+18),PSET
  599.     IF fig%(zx,zy)=46 THEN win=1
  600.     IF fig%(zx,zy)=93 THEN win=2
  601.     SOUND 250,4.5,200,0:SOUND 260,4.5,200,1    
  602.     fig%(zx,zy)=0:IF spieler=0 THEN gegner=1 :ELSE gegner=0
  603.     fganz(gegner)=fganz(gegner)-1:feindkill=1
  604.     IF fganz(gegner)=0 THEN win=spieler   
  605.     RETURN
  606.   END IF
  607.   mclr 22,12:LOCATE 23,11:Shadow STR$(st%(fig%(zx,zy))),9,1,9,0,0,0
  608.   IF wa%(fig%(zx,zy))<ABS(zx-zxalt)+ABS(zy-zyalt) OR spar%(zxalt,zyalt)=3 THEN RETURN
  609.   st%(f%)=st%(f%)-hv% 
  610.   IF st%(f%)<=0 THEN 
  611.     IF mpjn=0 THEN PUT((zxalt MOD 13)*35+180,(zyalt MOD 13)*18+1),ob%(0,spar%(zxalt,zyalt)+18),PSET
  612.     IF fig%(zxalt,zyalt)=46 THEN win=1
  613.     IF fig%(zxalt,zyalt)=93 THEN win=2
  614.     SOUND 250,4.5,200,0:SOUND 260,4.5,200,1   
  615.     fig%(zxalt,zyalt)=0:IF spieler=0 THEN gegner=1 :ELSE gegner=0
  616.     fganz(spieler)=fganz(spieler)-1:freundkill=1
  617.     IF fganz(spieler)=0 THEN win=gegner 
  618.     RETURN
  619.   END IF
  620.   mclr 7,13:LOCATE 8,12:Shadow STR$(st%(f%)),9,1,9,0,0,0
  621.   RETURN
  622.  
  623. moveclr:
  624.   FOR i=1 TO 94
  625.     beweg%(i)=0
  626.   NEXT i
  627. RETURN
  628.  
  629. speichern:
  630.   turn=spieler
  631.   OPEN "Eriador.Spiel" FOR OUTPUT AS 1
  632.     FOR j=0 TO 38
  633.       FOR i=0 TO 38
  634.         PRINT #1,MKI$(spar%(i,j));
  635.         PRINT #1,MKI$(fig%(i,j));
  636.       NEXT i
  637.     NEXT j
  638.     FOR i=1 TO 94
  639.       PRINT #1,MKI$(st%(i));
  640.       PRINT #1,MKI$(beweg%(i));
  641.     NEXT i
  642.     PRINT #1,MKI$(turn)
  643.     FOR i=0 TO 1
  644.       PRINT #1,MKI$(cx%(i));
  645.       PRINT #1,MKI$(cy%(i));
  646.       PRINT #1,MKI$(mm%(i));
  647.     NEXT    
  648.   CLOSE 1
  649.   RETURN
  650.  
  651. winscreen:
  652.   OBJECT.OFF 1
  653.   GOSUB farbenaus
  654.   CLS
  655.   Diskfont "garnet",16
  656.   LINE (150,6)-(492,39),1,bf
  657.   LINE (154,2)-(488,43),1,bf
  658.   LINE (150,6)-(492,39),6,b
  659.   LINE (154,2)-(488,43),7,b
  660.   LOCATE 3,12
  661.   Shadow "Kampf um Eriador",12,2,19,0,0,0
  662.   Diskfont "garnet",9
  663.   IF win=2 THEN
  664.     LOCATE 12,7:Shadow "Der helle König konnte die Schlacht für sich entscheiden !",9,1,9,0,0,0
  665.     LOCATE 14,2:Shadow "Das Gute hat gesiegt und das Böse wurde aus der Welt vertrieben.",9,1,9,0,0,0
  666.     FOR i=100 TO 1000 STEP 20
  667.       SOUND i,1,200,0:SOUND i+10,1.5,200,1
  668.     NEXT i        
  669.   ELSE
  670.     LOCATE 12,1:Shadow "Der dunkle König ist auch in der letzten Schlacht siegreich geblieben !",9,1,9,0,0,0
  671.     LOCATE 14,3:Shadow "Und so versank die Welt für den Rest des Zeitalters im Schatten.",9,1,9,0,0,0
  672.     FOR i=800 TO 100 STEP -20
  673.       SOUND i,1,200,0:SOUND i+10,1.5,200,1
  674.     NEXT i        
  675.   END IF
  676.   LOCATE 17,11:Shadow "Wünschen Sie, eine weitere Partie zu spielen ?",9,1,9,0,0,0
  677.   GOSUB farbreset:PALETTE 0,0,0.2,0:PALETTE 1,0,0,0
  678.   k$=UCASE$(INKEY$)
  679.   WHILE k$<>"J" AND k$<>"N"
  680.     k$=UCASE$(INKEY$)
  681.   WEND
  682.   IF k$="J" THEN RUN
  683.   WINDOW CLOSE 2:SCREEN CLOSE 1
  684.   SYSTEM
  685.   
  686. TitleScreen:  
  687.   GOSUB farbenaus
  688.   CLS
  689.   LINE (150,6)-(492,39),1,bf
  690.   LINE (154,2)-(488,43),1,bf
  691.   LINE (150,6)-(492,39),6,b
  692.   LINE (154,2)-(488,43),7,b
  693.   LOCATE 3,12
  694.   Shadow "Kampf um Eriador",12,2,19,0,0,0
  695.   Diskfont "garnet",9
  696.  
  697.   RESTORE data1:endw=23
  698.   IF loaded=1 THEN endw=22
  699.   FOR i=12 TO endw
  700.     LOCATE i,12:READ tx$:Shadow tx$,9,1,9,0,0,0
  701.   NEXT i
  702.   GOSUB farbreset:PALETTE 0,0,0.2,0:PALETTE 1,0,0,0
  703.   IF loaded=1 THEN warten(10):RETURN
  704.   
  705. abfr:
  706.   tx$=INKEY$
  707.   IF UCASE$(tx$)="N" THEN RETURN
  708.   IF UCASE$(tx$)<>"J" THEN abfr
  709. data1:
  710.   DATA "Ein Fantasy - Strategiespiel für zwei Personen"," "
  711.   DATA "    Public-Domain-Software für den Amiga"," "," "
  712.   DATA "       Entwickelt und programmiert von"," "
  713.   DATA "    Ralf Böwing     und     Roland Hartz"," "," "," "
  714.   DATA "        Wünschen Sie eine Einleitung ?"
  715.   
  716.   GOSUB farbenaus
  717.   LINE (0,80)-(639,255),0,bf
  718.   RESTORE data2
  719.   FOR i=9 TO 26 STEP 2
  720.     LOCATE i,2:READ tx$:Shadow tx$,9,1,9,0,0,0
  721.   NEXT i
  722.   GOSUB farbreset:PALETTE 0,0,0.2,0:PALETTE 1,0,0,0
  723. data2:
  724.   DATA "In den jungen Jahren von Eglador entbrannte zum ersten Mal der"
  725.   DATA "Kampf zwischen den Herrschern des Lichts und der Finsternis."
  726.   DATA "Bisher konnte jedoch noch keine der beiden Seiten einen end-" 
  727.   DATA "gültigen Sieg erringen."
  728.   DATA " "
  729.   DATA "Aber im Jahre 6735 des zweiten Zeitalters bahnt sich das zukunfts-"
  730.   DATA "bestimmende letzte Gefecht zwischen den beiden Gegnern an. Im"
  731.   DATA "Lande Eriador entscheidet sich zwischen den verbleibenden Legionen"
  732.   DATA "das Schicksal von Eglador..."
  733.   warten (20)
  734. gh: 
  735.   CLS:GOSUB farbenaus
  736.   LOCATE 3,2:Shadow "Die helle Legion :",9,1,9,0,0,0
  737.   LOCATE 3,38:Shadow "Die dunkle Legion :",9,1,9,0,0,0
  738.   i=0
  739.   RESTORE fig
  740.   FOR y%=39 TO 224 STEP 21
  741.     LINE (18,y%+2)-(53,y%+19),1,bf
  742.     PUT (14,y%),ob%(0,i),PSET
  743.     READ d$:Shadow d$,9,1,9,1,72,y%+11
  744.     i=i+1
  745.   NEXT y%
  746.   FOR y%=39 TO 224 STEP 21
  747.     LINE (342,y%+2)-(375,y%+19),1,bf
  748.     PUT (338,y%),ob%(0,i),PSET
  749.     READ d$:Shadow d$,9,1,9,1,400,y%+11
  750.     i=i+1
  751.   NEXT y%
  752. fig:  
  753.   DATA "3 Axtmänner","3 Schwertkämpfer","2 Legionäre","2 Ritter","2 Schützen","Belagerungsmannschaft"
  754.   DATA "2 Adler","König des Lichts","Magier"
  755.   DATA "3 Keulenmänner","3 Schwertkämpfer","2 Legionäre","2 Ritter","2 Schützen","Belagerungsmannschaft"
  756.   DATA "2 Drachen","König der Finsternis","Magier"
  757.   GOSUB farbreset:PALETTE 0,0,0.2,0:PALETTE 1,0,0,0
  758.   warten (40)
  759.   GOSUB farbenaus
  760.   CLS
  761.   Shadow "Jeder Spieler verfügt über drei der gezeigten Legionen - es muß",9,1,9,1,15,31
  762.   Shadow "wohl nicht ausdrücklich erwähnt werden, daß jede Seite nur EINEN",9,1,9,1,15,45  
  763.   Shadow "König bzw. Magier hat !",9,1,9,1,15,59
  764.   Shadow "Im Folgenden sind die Landschaftselemente dargestellt :",9,1,9,1,15,88
  765.   RESTORE scene:i=18
  766.   FOR y%=107 TO 212 STEP 21
  767.     LINE (50,y%+2)-(83,y%+19),1,bf
  768.     PUT (46,y%),ob%(0,i),PSET
  769.     READ d$:Shadow d$,9,1,9,1,114,y%+11
  770.     i=i+1
  771.   NEXT y%  
  772. scene:
  773.   DATA "Ebene  -  begehbar von allen","Wasser  -  nur von Adlern und Drachen überwindbar"
  774.   DATA "Wald  -  mindert Marschgeschwindigkeit um 1 Feld","Gebirge  -  siehe Wasser"
  775.   DATA "Bauwerke  -  kann man mit Katapulten zerstören","Sumpf  -  mindert Marschgeschwindigkeit um 2 Felder"
  776.   GOSUB farbreset:PALETTE 0,0,0.2,0:PALETTE 1,0,0,0
  777.   warten (35)
  778.   GOSUB farbreset
  779.   CLS
  780.   LOCATE 2,1:Shadow "Hier die Residenz",9,1,9,0,0,0
  781.   LOCATE 4,1:Shadow "   des hellen",9,1,9,0,0,0
  782.   LOCATE 6,1:Shadow "     Königs :",9,1,9,0,0,0  
  783.   zx=0:zy=0:Mapon (7):warten (20)
  784.   CLS
  785.   LOCATE 24,1:Shadow "Hier die Residenz",9,1,9,0,0,0
  786.   LOCATE 26,1:Shadow "   des dunklen",9,1,9,0,0,0
  787.   LOCATE 28,1:Shadow "     Königs :",9,1,9,0,0,0  
  788.   zx=38:zy=38:Mapon (3):warten (20)
  789.   einl=1
  790.   RETURN
  791.  
  792. REM *** Spielbeginn ***
  793.  
  794. Spiel:
  795.   IF einl=0 THEN CLS:GOSUB farbreset:Mapon(3) :ELSE GOSUB groclear
  796.   IF loaded=0 THEN
  797.     Shadow "               Der dunkle König beginnt den Feldzug !",9,1,9,1,2,248
  798.   ELSE
  799.     IF turn=0 THEN zw$="dunkle König" :ELSE zw$="helle König"
  800.     Shadow "               Der "+zw$+" führt den Feldzug fort !",9,1,9,1,2,248
  801.   END IF
  802.   warten (2):GOSUB kleinclear
  803.   zx=38:zy=38:bldnr=3:Zeigerset zx,zy,bldnr:spieler=turn
  804.   cx%(0)=38:cy%(0)=38:cx%(1)=0:cy%(1)=0:mm%(0)=3:mm%(1)=7:win=0
  805.  
  806. REM *** Hauptschleife des Spiels ***
  807.  
  808. Haupt:
  809.   tza=0
  810.   IF fganz(spieler)<15 THEN tzagrenze=fganz(spieler) :ELSE tzagrenze=15
  811.   SOUND 270,4.5,200,0:SOUND 280,4.5,200,1
  812.   IF spieler=0 THEN
  813.     Shadow "                          Zugphase dunkler König",9,1,9,1,2,248:offs=48
  814.   ELSE
  815.     Shadow "                          Zugphase heller König",9,1,9,1,2,248:offs=1
  816.   END IF
  817.   warten(2):GOSUB kleinclear
  818.   zx=cx%(spieler):zy=cy%(spieler)
  819.   IF mm%(spieler)<>bldnr THEN Mapon mm%(spieler):bldnr=mm%(spieler)
  820.   Zeigerset zx,zy,bldnr:OBJECT.ON 1:GOSUB groclear:warten(1)
  821. l: 
  822.   GOSUB tasten
  823.   IF spar%(0,1)=4 AND spar%(1,0)=4 AND fganz(1)=1 THEN win=1
  824.   IF spar%(37,38)=4 AND spar%(38,37)=4 AND fganz(0)=1 THEN win=2
  825.   IF win<>0 THEN winscreen 
  826.   IF tza<tzagrenze THEN GOTO l
  827.   GOSUB moveclr
  828.   IF spieler=0 THEN spieler=1 :ELSE spieler=0
  829.   GOTO Haupt
  830.  
  831.